#include <iostream>
#include <queue>

using namespace std;

// 使用一个队列来实现
// 每次pop时把队列前 n-1 项重新push回队列尾部，弹出前面元素
class MyStack {
private:
    queue<int> myQueue;
public:
    MyStack() {
    }

    void push(int x) {
        myQueue.push(x);
    }

    int pop() {
        int size = myQueue.size() - 1;
        while (size--) {
            int x = myQueue.front();
            myQueue.pop();
            myQueue.push(x);
        }
        int result = myQueue.front();
        myQueue.pop();

        return result;
    }

    int top() {
        return myQueue.back();
    }

    bool empty() {
        return myQueue.empty();
    }
};

int main() {
    MyStack* myStack = new MyStack();
    myStack->push(1);
    myStack->push(2);
    myStack->top();
    myStack->pop();
    myStack->empty();

    return 0;
}